package com.only4play.system.application;

import com.only4play.system.req.template.AbstractTemplateBasedCreateReq;

/**
 * @author hinzzz www.hinzzz.cn 157957329@qq.com
 * 2024-04-08
 */
public abstract class AbstractTemplateBasedCreateService<I extends AbstractTemplateBasedCreateReq, R> implements ITemplateBasedCreateService<I, R> {

    private Long createObject() {
        return null;
    }

    @Override
    public R createTemplateBased(I basedCreateReq) {
        // 1. 创建模板
        // 2. 创建模板项
        // 3. 创建模板项值
        // 4. 创建模板项值项
        // 5. 创建模板项值项值
        // 6. 创建模板项值项值项
        // 7. 创建模板项值项值项值
        // 8. 创建模板项值项值项值值
        // 9. 创建模板项值项值项值值值

        //创建模板
        Long templateId = createObject();

        createObject(templateId, basedCreateReq);
        //创建自己的实现 创建产品 、工单、问卷

        //由子类来决定是否创建模板

        return null;
    }

    abstract void createObject(Long templateId, I basedCreateReq);

}
